undefined
與 not defined
雖然在字面上的意思,都是未定義、還未定義的意思,但兩者是有很大的區別的
當程式在運作時,因為 Hoisting 的關係,會將已宣告的變數提升,並先給予變數一個預設的值 - undefined
範例如下:
先建立一個空間給變數 nameA
,但還未賦予值,系統會先賦予一個預設的值 - undefined
var nameA;
console.log(nameA); // undefined
因變數或函式沒被建立或是宣告,系統找不到此變數或函式,則會顯示 xxx is not defined
的錯誤訊息
範例如下:
此例子中,並沒有宣告變數 nameA
,系統找不到,所以會顯示 is not defined
錯誤訊息
console.log(nameA);
// ReferenceErrer: nameA is not defined
雖然 undefined
代表了一個未定義的值,且在 JavaScript 中是可以將變數賦予值 undefined
,但因 undefined
是系統編配的初始值,賦予變數值等於 undefined
可能會混淆開發者,不知是否已給予變數值,所以不應該這樣做,但若是想賦予變數一個空值,則可以使用 null
範例如下:
var nameA = null;
console.log(nameA);